home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Shareware Grab Bag
/
Shareware Grab Bag.iso
/
007
/
modula.arc
/
SIERPINS.MOD
< prev
next >
Wrap
Text File
|
1985-05-30
|
1KB
|
70 lines
MODULE sierpinski;
FROM Terminal IMPORT Read;
FROM LineDrawing IMPORT width, height, Px, Py, clear, line;
CONST SquareSize = 512;
VAR i,h,x0,y0: CARDINAL;
ch: CHAR;
PROCEDURE A(k: CARDINAL);
BEGIN
IF k > 0 THEN
A(k-1); line(7,h);
B(k-1); line(0,2*h);
D(k-1); line(1,h);
A(k-1)
END
END A;
PROCEDURE B(k: CARDINAL);
BEGIN
IF k > 0 THEN
B(k-1); line(5,h);
C(k-1); line(6,2*h);
A(k-1); line(7,h);
B(k-1)
END
END B;
PROCEDURE C(k: CARDINAL);
BEGIN
IF k > 0 THEN
C(k-1); line(3,h);
D(k-1); line(4,2*h);
B(k-1); line(5,h);
C(k-1)
END
END C;
PROCEDURE D(k: CARDINAL);
BEGIN
IF k > 0 THEN
D(k-1); line(1,h);
A(k-1); line(2,2*h);
C(k-1); line(3,h);
D(k-1)
END
END D;
BEGIN
clear; i := 0;
h := SquareSize DIV 4;
x0 := CARDINAL(width) DIV 2;
y0 := CARDINAL(height) DIV 2 + h;
REPEAT
INC(i);
x0 := x0-h;
h := h DIV 2;
y0 := y0 + h;
Px := x0; Py := y0;
A(i); line(7,h);
B(i); line(5,h);
C(i); line(3,h);
D(i); line(1,h);
Read(ch)
UNTIL (i = 6) OR (ch = 33C);
clear
END sierpinski.